In applications such as moving image streaming, in a case where an intolerably large number of packets are erased in an application level, an error correction code is used to secure quality. For example, Patent Literature 1 discloses creating redundant packets using a Reed-Solomon code for a plurality of information packets, adding these redundant packets to the information packets and transmitting these packets. By this means, even in a case where packets are erased, it is possible to decode erased packets if these packets are within a range of error correction capability of a Reed-Solomon code.
However, in a case where the number of packets erased exceeds the correction performance of a Reed-Solomon code or where packets are sequentially erased over a relatively long period due to fading in a radio communication path and burst erasure is caused, a case is possible where erasure correction is not performed effectively. In a case of using a Reed-Solomon code, although it is possible to improve correction performance by increasing the block length of a Reed-Solomon code, there is a problem that the amount of calculations in encoding and decoding processing and the circuit scale increase.
Regarding such a problem, attention has been attracted to a low-density parity-check (LDPC) code as an error correction code for packet erasure. An LDPC code refers to a code defined by a very sparse parity check matrix, and enables encoding and decoding processing with feasible time and calculation cost even in a case where a codebook length is the order of several to tens of thousands.
FIG. 1 is a conceptual diagram showing a communication system utilizing LDPC code erasure correction coding. In FIG. 1, the communication apparatus on the encoding side performs LDPC coding on information packets 1 to 4 to transmit, and generates parity packets a and b. A higher layer processing section outputs coding packets found by adding parity packets to information packets, to a lower layer (physical layer in the example of FIG. 1), and a physical layer processing section in the lower layer converts the coding packets in a form that can be transmitted in the communication channel, and outputs the result to the communication channel. FIG. 1 shows an example case where the communication channel is a radio communication channel.
The communication apparatus on the decoding side performs reception processing in a physical layer processing section in the lower layer. At this time, presume that bit error occurs in the lower layer. Due to this bit error, a case is possible where packets including corresponding bits are not decoded correctly in the higher layer and where a packet is erased. In the example of FIG. 1, a case is shown where information packet 3 is erased. A higher layer processing section decodes erased information packet 3 by applying LDPC decoding processing to a received packet sequence. As LDPC decoding, for example, a sum-product algorithm utilizing belief propagation (BP) (see Non-Patent Literature 1) is used.
A low-density parity-check block (hereinafter “LDPC-BC”) code is a block code (e.g. see Non-Patent Literature 1 and Non-Patent Literature 2) and has a very higher flexibility in a code configuration than a Reed-Solomon code, and can support various code lengths and coding rates by using different parity check matrixes. However, a system supporting a plurality of coding lengths and coding rates needs to hold a plurality of parity check matrixes.
In contrast to this kind of LDPC code of block code, LDPC-CC (Low-Density Parity-Check Convolutional Code) allowing encoding and decoding of information sequences of arbitrary length have been investigated (e.g. see Non-Patent Literature 3).
An LDPC-CC is a convolutional code defined by a low-density parity-check matrix. As an example, parity check matrix HT[0,n] of an LDPC-CC in a coding rate of R=½ is shown in FIG. 2. Here, element h1(m)(t) of HT[0,n] has a value of 0 or 1. All elements other than h1(m)(t) are 0. M represents the LDPC-CC memory length, and n represents the length of an LDPC-CC codeword. As shown in FIG. 2, a characteristic of an LDPC-CC parity check matrix is that it is a parallelogram-shaped matrix in which 1 is placed only in diagonal terms of the matrix and neighboring elements, and in which the bottom-left and top-right elements of the matrix are zero.
FIG. 3 shows a configuration example of an encoder of an LDPC-CC defined by parity check matrix HT[0,n] when h1(0)(t)=1 and h2(0)(t)=1. As shown in FIG. 3, an LDPC-CC encoder is provided with M+1 shift registers and a modulo-2 (exclusive OR) adder. Consequently, a characteristic of an LDPC-CC encoder is that it can be implemented with extremely simple circuitry in comparison with a circuit that performs generator matrix multiplication or an LDPC-BC encoder that performs computation based on backward (forward) substitution. Also, since the encoder shown in FIG. 3 is a convolutional code encoder, it is not necessary to divide an information sequence into fixed-length blocks when encoding, and an information sequence of any length can be encoded.